@@ -499,6 +499,28 @@ SELECT b, b >> 1 AS bsr, b << 1 AS bsl
499
499
0000000000000001 | 0000000000000000 | 0000000000000010
500
500
(16 rows)
501
501
502
+ SELECT b, b >> 8 AS bsr8, b << 8 AS bsl8
503
+ FROM BIT_SHIFT_TABLE ;
504
+ b | bsr8 | bsl8
505
+ ------------------+------------------+------------------
506
+ 1101100000000000 | 0000000011011000 | 0000000000000000
507
+ 0110110000000000 | 0000000001101100 | 0000000000000000
508
+ 0011011000000000 | 0000000000110110 | 0000000000000000
509
+ 0001101100000000 | 0000000000011011 | 0000000000000000
510
+ 0000110110000000 | 0000000000001101 | 1000000000000000
511
+ 0000011011000000 | 0000000000000110 | 1100000000000000
512
+ 0000001101100000 | 0000000000000011 | 0110000000000000
513
+ 0000000110110000 | 0000000000000001 | 1011000000000000
514
+ 0000000011011000 | 0000000000000000 | 1101100000000000
515
+ 0000000001101100 | 0000000000000000 | 0110110000000000
516
+ 0000000000110110 | 0000000000000000 | 0011011000000000
517
+ 0000000000011011 | 0000000000000000 | 0001101100000000
518
+ 0000000000001101 | 0000000000000000 | 0000110100000000
519
+ 0000000000000110 | 0000000000000000 | 0000011000000000
520
+ 0000000000000011 | 0000000000000000 | 0000001100000000
521
+ 0000000000000001 | 0000000000000000 | 0000000100000000
522
+ (16 rows)
523
+
502
524
SELECT b::bit(15), b::bit(15) >> 1 AS bsr, b::bit(15) << 1 AS bsl
503
525
FROM BIT_SHIFT_TABLE ;
504
526
b | bsr | bsl
@@ -521,6 +543,28 @@ SELECT b::bit(15), b::bit(15) >> 1 AS bsr, b::bit(15) << 1 AS bsl
521
543
000000000000000 | 000000000000000 | 000000000000000
522
544
(16 rows)
523
545
546
+ SELECT b::bit(15), b::bit(15) >> 8 AS bsr8, b::bit(15) << 8 AS bsl8
547
+ FROM BIT_SHIFT_TABLE ;
548
+ b | bsr8 | bsl8
549
+ -----------------+-----------------+-----------------
550
+ 110110000000000 | 000000001101100 | 000000000000000
551
+ 011011000000000 | 000000000110110 | 000000000000000
552
+ 001101100000000 | 000000000011011 | 000000000000000
553
+ 000110110000000 | 000000000001101 | 000000000000000
554
+ 000011011000000 | 000000000000110 | 100000000000000
555
+ 000001101100000 | 000000000000011 | 110000000000000
556
+ 000000110110000 | 000000000000001 | 011000000000000
557
+ 000000011011000 | 000000000000000 | 101100000000000
558
+ 000000001101100 | 000000000000000 | 110110000000000
559
+ 000000000110110 | 000000000000000 | 011011000000000
560
+ 000000000011011 | 000000000000000 | 001101100000000
561
+ 000000000001101 | 000000000000000 | 000110100000000
562
+ 000000000000110 | 000000000000000 | 000011000000000
563
+ 000000000000011 | 000000000000000 | 000001100000000
564
+ 000000000000001 | 000000000000000 | 000000100000000
565
+ 000000000000000 | 000000000000000 | 000000000000000
566
+ (16 rows)
567
+
524
568
CREATE TABLE VARBIT_SHIFT_TABLE(v BIT VARYING(20));
525
569
INSERT INTO VARBIT_SHIFT_TABLE VALUES (B'11011');
526
570
INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'0' AS BIT VARYING(6)) >>1 FROM VARBIT_SHIFT_TABLE;
@@ -573,6 +617,28 @@ SELECT v, v >> 1 AS vsr, v << 1 AS vsl
573
617
00000000000000011011 | 00000000000000001101 | 00000000000000110110
574
618
(16 rows)
575
619
620
+ SELECT v, v >> 8 AS vsr8, v << 8 AS vsl8
621
+ FROM VARBIT_SHIFT_TABLE ;
622
+ v | vsr8 | vsl8
623
+ ----------------------+----------------------+----------------------
624
+ 11011 | 00000 | 00000
625
+ 011011 | 000000 | 000000
626
+ 0011011 | 0000000 | 0000000
627
+ 00011011 | 00000000 | 00000000
628
+ 000011011 | 000000000 | 100000000
629
+ 0000011011 | 0000000000 | 1100000000
630
+ 00000011011 | 00000000000 | 01100000000
631
+ 000000011011 | 000000000000 | 101100000000
632
+ 0000000011011 | 0000000000000 | 1101100000000
633
+ 00000000011011 | 00000000000000 | 01101100000000
634
+ 000000000011011 | 000000000000000 | 001101100000000
635
+ 0000000000011011 | 0000000000000000 | 0001101100000000
636
+ 00000000000011011 | 00000000000000000 | 00001101100000000
637
+ 000000000000011011 | 000000000000000000 | 000001101100000000
638
+ 0000000000000011011 | 0000000000000000000 | 0000001101100000000
639
+ 00000000000000011011 | 00000000000000000000 | 00000001101100000000
640
+ (16 rows)
641
+
576
642
DROP TABLE BIT_SHIFT_TABLE;
577
643
DROP TABLE VARBIT_SHIFT_TABLE;
578
644
-- Get/Set bit
0 commit comments