C语言基础题:d1=~a的意思不就是按位取反么?不就是把0变1,1变0么?为啥又负数补码还原求原码
C语言基础题:d1=~a的意思不就是按位取反么?不就是把0变1,1变0么?为啥又负数补码还原求原码
日期:2016-11-27 04:57:46 人气:2
~a表示将a按位取反,a是一个变量 , 至少要有1个字节(char),而一个字节有8位!
计算机中存储的整数,都是按补码存放的,规定:正数的补码与原码相同,负数的补码为其原码的反码+1。 所以,当a是负数时,计算~a的结果是要求补码的。
如:
char a=7 ; (00000111)
~a = 11111000
转换成原码为:
反码:11111000 - 1 = 11110111
原码:10001000= -8