所以我正在为C 进行位移位
00001010>>4不应该给予0000000?
因为我把比特向右移了4次,这和除以4是一样的。但我的笔记上写着10101000笔记错了吗?
每次移位都等于将值除以2。向右移动四次就像除以2四次。这是整数数学,所以任何分数部分都会被截断。
假设00001010
(10(是二进制记数法,结果如下:
班次1:00000101
(5(
班次2:00000010
(2(
班次3:00000001
(1(
班次4:00000000
(0(
所以结果确实是0。
您的笔记有误。printf("%dn", strtol("00001010", 0, 2) >> 4)
产生"0"。
右移00001010bin(10 dec(4次确实会得到:00000000bin(0 dec(而左移4次:00001010 bin(10 dec(将给你:10100000 bin(160 dec编辑(