diff --git a/lib/ipaddress/ipv4.rb b/lib/ipaddress/ipv4.rb
index a798a24e3a638009d268d9f689c7f5114f6630c8..716d4d9593b794e4d3c369f5be2bcc23da76c8ec 100644
--- a/lib/ipaddress/ipv4.rb
+++ b/lib/ipaddress/ipv4.rb
@@ -311,7 +311,7 @@ module IPAddress;
     #     #=> true
     #
     def network?
-      @u32 | @prefix.to_u32 == @prefix.to_u32
+      (@prefix < 32) && (@u32 | @prefix.to_u32 == @prefix.to_u32)
     end
 
     #
diff --git a/test/ipaddress/ipv4_test.rb b/test/ipaddress/ipv4_test.rb
index f14463409e8b2a15c7198fee1b994e79d4094c7b..5177c75287017721a2eb250421ed6d935029aa1a 100644
--- a/test/ipaddress/ipv4_test.rb
+++ b/test/ipaddress/ipv4_test.rb
@@ -148,6 +148,11 @@ class IPv4Test < Test::Unit::TestCase
     assert_equal true, @network.network?
     assert_equal false, @ip.network?
   end
+  
+  def test_one_address_network
+    network = @klass.new("172.16.10.1/32")
+    assert_equal false, network.network?
+  end
 
   def test_method_broadcast
     @broadcast.each do |addr,bcast|